package com.xjh.basestudy.hanshunpingJava;

//以下代码结果是什么？
/*
* 代码理解:
* a,b,x,y是四个指针,其中a,x指向值为'A'的对象,   y,b指向值为"B"的对象
* x.append(y)将值为'A'的对象的值修改为"AB",所以a,x还是指向该对象,只不过值换成了"AB"
*  y = x 是让y指向x所指的对象,也就是值为"AB"的对象,所以输出x,y都是AB
*
*  因为方法传入的参数是参数的地址(operate传入a,b的地址,与a,b本身指向谁无关,x,y怎么操作也改变不了a,b指向的是谁,只能改变这个'谁'自己的特征)
*  又因为值为'B'的对象的特征没有被改变,所以b指向的还是值为'B'的对象
 * */
public class hello {
    public static void main(String[] args) {

        StringBuffer a = new StringBuffer("A");

        StringBuffer b = new StringBuffer("B");

        operate(a, b);

        System.out.println(a + "." + b);  // AB.B
    }

    static void operate(StringBuffer x, StringBuffer y) {
        x.append(y);
        y = x;
        System.out.println(x); //AB
        System.out.println(y); //AB
    }
}
